function interactive_lead_map(data)
    % 加载数据
    %load_data=load('./classification_results_basic_10000_1'); % 假设加载后的数据存储在变量 importance 中
    load_data=load('./importance_basic.mat');
    % 提取前 18*10 的数据
    %样本数量
    sample_num=1;
    %通道数
    num_channels = 18;
    %特征总数
    num_points = 80;
    importance = load_data.importance(sample_num,1:num_channels*num_points); % 提取前 18*10 的数据
    % 重塑数据为 18x10 的矩阵
    data_matrix = reshape(importance, [num_channels, num_points])';
    %特征编号
    feature_num=1;
    data=data_matrix(feature_num,:);
    isDraggable = false; % 默认允许拖动
    % 初始导联名称和位置
    lead_names = {'FP1-F7', 'F7-T3', 'T3-T5', 'T5-O1', ...
                  'FP1-F3', 'F3-C3', 'C3-P3', 'P3-O1', ...
                  'FP2-F4', 'F4-C4', 'C4-P4', 'P4-O2', ...
                  'FP2-F8', 'F8-T4', 'T4-T6', 'T6-O2', ...
                  'Fz-Cz', 'Cz-Pz'};

    lead_coords = [
        -0.43, 0.66;   % FP1-F7
        -0.65, 0.31;   % F7-T3
        -0.65, -0.31;  % T3-T5
        -0.43, -0.66;  % T5-O1
        -0.2, 0.56;   % FP1-F3
        -0.32, 0.2;   % F3-C3
        -0.32, -0.2;  % C3-P3
        -0.2, -0.56;  % P3-O1
         0.2, 0.56;   % FP2-F4
         0.32, 0.2;   % F4-C4
         0.32, -0.2;  % C4-P4
         0.2, -0.56;  % P4-O2
         0.43, 0.66;   % FP2-F8
         0.65, 0.31;   % F8-T4
         0.65, -0.31;  % T4-T6
         0.43, -0.66;  % T6-O2
         0,    0.15;   % Fz-Cz
         0,   -0.15];  % Cz-Pz



    % 创建新的图形窗口
    fig = figure('Name', 'Interactive Lead Map'); % 不设置 WindowButton 回调函数
    
    %% 需要调整节点时取消注释即可
    % 创建节点移动调节按钮
    %toggleButton = uicontrol('Style', 'pushbutton', 'String', '开启节点调节', ...
                         %'Position', [20, 60, 100, 30], 'Callback', @toggleDragging);
    % 创建打印按钮
    %uicontrol('Style', 'pushbutton', 'String', '打印点位坐标', ...
              %'Position', [20, 20, 100, 30], 'Callback', @printCoordinates);

    % 绘制初始图形
    ax = axes;
    hold on;
    axis equal; % 保持比例
    axis off; % 保持比例
    xlim([-1.2, 1.2]);
    ylim([-1.2, 1.2]);
    %title(['18 导联热力图 ——— 特征',num2str(feature_num),'号']);

    
    % 绘制初始图像
    [Xq, Yq] = meshgrid(linspace(-1, 1, 100), linspace(-1, 1, 100)); % 创建查询网格
    
    % 绘制圆形代表头部
    %viscircles([0, 0], 1, 'LineStyle', '--', 'Color', [0.5, 0.5, 0.5]);

    % 添加三角形作为鼻子
    nose_x = [0, -0.1, 0.1];
    nose_y = [1.1, 1, 1];
    %patch(nose_x, nose_y, 'w', 'EdgeColor', 'none');  % 使用黑色填充
    
    % 添加半圆作为耳朵
    theta_left = linspace(pi/2, 3*pi/2, 100);  % 左耳半圆，从上到下
    theta_right = linspace(-pi/2, pi/2, 100);  % 右耳半圆，从下到上
    
    left_ear_x = -1 + 0.2 * cos(theta_left);  % 左耳在左侧
    left_ear_y = 0.2 * sin(theta_left);  % 左耳上下位置调整
    
    right_ear_x = 1 + 0.2 * cos(theta_right);  % 右耳在右侧
    right_ear_y = 0.2 * sin(theta_right);  % 右耳上下位置调整
    
    %fill(left_ear_x, left_ear_y, 'w', 'EdgeColor', 'none');  % 绘制左耳
    %fill(right_ear_x, right_ear_y, 'w', 'EdgeColor', 'none');  % 绘制右耳

    % 保存文本对象作为全局变量
    texts = text(lead_coords(:,1), lead_coords(:,2), lead_names, 'VerticalAlignment', 'bottom', ...
                 'HorizontalAlignment', 'center', 'FontSize', 10);

    updatePlot(); % 初次更新图形

    % 定义交互控制
    function startDragFcn(~, ~)
        % 找到最近的点
        [~, idx] = min(sum((lead_coords - ax.CurrentPoint(1,1:2)).^2, 2));
        set(gcf, 'UserData', idx); % 保存当前拖动的点索引
    end

    function stopDragFcn(~, ~)
        set(gcf, 'UserData', []); % 清除当前拖动的点索引
    end

    function draggingFcn(~, ~)
        idx = get(gcf, 'UserData');
        if ~isempty(idx)
            % 更新当前拖动点的位置
            lead_coords(idx, :) = ax.CurrentPoint(1, 1:2);
            updatePlot(); % 更新绘图
        end
    end

    function updatePlot()
        % 清除现有的等高线
        cla;
        % 创建圆形遮罩
        theta = linspace(0, 2*pi, 100);
        x_circle = cos(theta);
        y_circle = sin(theta);
        circle_mask = inpolygon(lead_coords(:,1), lead_coords(:,2), x_circle, y_circle);
        
        % 计算网格数据
        [Xq, Yq] = meshgrid(linspace(-1, 1, 100), linspace(-1, 1, 100)); % 创建查询网格
        Zq = griddata(lead_coords(:,1), lead_coords(:,2), data, Xq, Yq, 'v4'); % 插值数据到网格
        
        % 创建圆形遮罩
        circle_mask_full = inpolygon(Xq(:), Yq(:), x_circle, y_circle);
        circle_mask_full = reshape(circle_mask_full, size(Xq));
        masked_Zq = NaN(size(Zq));
        masked_Zq(circle_mask_full) = Zq(circle_mask_full);

        % 绘制等高线图
        contourf(Xq, Yq, masked_Zq, 20, 'LineColor', 'none'); % 使用填充等高线图
        % 设置颜色条属性
        colormap('jet'); % 使用 jet 色图
        colorbar_handle = colorbar; % 添加颜色条
        caxis([0, 0.65]); % 设置 colorbar 范围为 0 到 1
        set(colorbar_handle, 'FontSize', 18); % 设置颜色条字体大小
        % 绘制导联点

        scatter(lead_coords(:,1), lead_coords(:,2), 100, data, 'filled', 'MarkerEdgeColor', 'k'); % 更新散点图
        delete(texts); % 删除旧的文本对象
        texts = text(lead_coords(:,1), lead_coords(:,2), lead_names, 'VerticalAlignment', 'bottom', ...
                     'HorizontalAlignment', 'center', 'FontSize', 10); % 重新绘制文本
        viscircles([0, 0], 1, 'LineStyle', '--', 'Color', [0.5, 0.5, 0.5]); % 绘制圆形代表头部
        
        % 重新绘制鼻子和耳朵
        patch(nose_x, nose_y, 'w', 'EdgeColor', 'none');  % 使用黑色填充
        fill(left_ear_x, left_ear_y, 'w', 'EdgeColor', 'none');
        fill(right_ear_x, right_ear_y, 'w', 'EdgeColor', 'none');
    end

    function printCoordinates(~, ~)
        % 打印所有点位的坐标
        fprintf('导联名称\tX坐标\tY坐标\n');
        for i = 1:length(lead_names)
            fprintf('%s\t%.2f\t%.2f\n', lead_names{i}, lead_coords(i, 1), lead_coords(i, 2));
        end
    end

    function toggleDragging(~, ~)
        if isDraggable
            set(fig, 'WindowButtonDownFcn', '');
            set(fig, 'WindowButtonUpFcn', '');
            set(fig, 'WindowButtonMotionFcn', '');
            isDraggable = false;
            toggleButton.String = '开启节点调节';
        else
            set(fig, 'WindowButtonDownFcn', @startDragFcn);
            set(fig, 'WindowButtonUpFcn', @stopDragFcn);
            set(fig, 'WindowButtonMotionFcn', @draggingFcn);
            isDraggable = true;
            toggleButton.String = '关闭节点调节';
        end
    end
end